# -*- coding: utf-8 -*-
# @Time    : 18-12-7 上午9:50
# @Author  : Redtree
# @File    : regex_matcher.py
# @Desc    : 正则匹配工具

import re

# 匹配电话号码
def match_phone_number(phone_number):
    phone_pat = re.compile(
        '^1[3-9][0-9]\d{8}$'
    )
    res = re.search(phone_pat, phone_number)
    if res:
        return True
    else:
        return False


# 匹配邮箱地址
def match_email(email):
    res = re.match(r'^[0-9a-zA-Z_]{0,19}@[0-9a-zA-Z]{1,13}\.[com,cn,net]{1,3}$', email)
    if res:
        return True
    else:
        return False


# 匹配用户id 英文+数字组合
def match_user_id(user_id):
    if re.match('[a-zA-Z0-9]+', user_id) and len(user_id) <= 20:
        return True
    else:
        return False


# 匹配0到100的整数
def check_0_to_100_integer(number):
    try:
        number = int(number)
        if number >= 0 and number <= 100:
            return number
        else:
            return False
    except:
        return False


def translate_special_str(regex_str: str) -> str:
    """转换含有特殊字符的字符串，使之能够在MongoDB数据库中使用正则表达式

    Args:
        regex_str (str): 需要进行转化的字符串

    Returns:
        str: 转换完成的字符串
    """
    special_str = u'\\$()*+.[]?^{}|'

    trans = str.maketrans({key: f'\\{key}' for key in special_str})

    return regex_str.translate(trans)

